package cn.xiaoyu;

import java.util.Arrays;
import java.util.Scanner;

public class Data {
	public static void main(String[] args) {
		// 创建一个数组
		String[][] arry = new String[1024][3];
		arry[0][0] = "1001";
		arry[0][1] = "123";
		arry[0][2] = "1000";

		arry[1][0] = "1002";
		arry[1][1] = "123";
		arry[1][2] = "2000";

		arry[2][0] = "1003";
		arry[2][1] = "123";
		arry[2][2] = "3000";

		a(arry);// 界面 调用主菜单

	}

	/**
	 * 主界面
	 * 
	 * @param arry
	 */
	public static void a(String[][] arry) { // A为界面的实参函数 调用B的数组
		System.out.println(" ");
		Scanner sc = new Scanner(System.in);
		System.out.println("====== WoNiuATM =======");// 输出界面的样式
		System.out.println("===== 1 登入   2注册  3退出  =====");
		System.out.println("=========================");

		System.out.print("请选择:");// 输出要选择谁

		int n = sc.nextInt(); // n为选择的数字
		switch (n) {
		case 1:
			c(arry);
			break;
		case 2:
			b(arry);
			break;
		case 3:
			System.out.println("欢迎再次使用WoNiuATM系统");
			System.exit(0);// 退出
			break;
		default:
			System.out.println("选择错误请重新选择");
			a(arry);
			break;
		}
	}

	/**
	 * 注册
	 */
	public static void b(String[][] arry) {
		// 输入账号
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入账号:");
		// x输入的账号
		String x = sc.next();
		// 判断输入的账号是否存在，如果存在，就不能注册 直接重新输入要注册的账号

		boolean a = false;// 如果a=true表示账号已存在 a=false表示账号不存在

		for (int i = 0; i < arry.length; i++) {
			if (arry[i][0] != null && arry[i][0].equals(x)) {
				System.out.println("账号已被注册");
				a = true;
				break;
			}
		}
		if (a == false) {
			System.out.println("账号可以使用");
			System.out.print("请输入密码:");
			String y = sc.next(); // y表示密码
			double money = Math.random() * 100000;// 用户登入进来给用户随机生成一个金额

			int index = -1;// 找到下标位置然后赋值将i的值赋值给 index index=找到的下标位置
			for (int i = 0; i < arry.length; i++) { // 找出能存在数组中null下标的位置
				if (arry[i][0] == null) {
					index = i;
					break;
				}
			}
			if (index != -1) {// 找到下标位置然后将输入的密码和账号存入到数组里面
				arry[index][0] = x;
				arry[index][1] = y;
				arry[index][2] = money + " ";
				System.out.println("注册成功");
			}
		}
		a(arry);// 注册成功返回主界面
	}

	/**
	 * 登入界面
	 */
	public static int c(String[][] arry) {
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入账号:");
		String x = sc.next();// 输入账号
		System.out.print("请输入密码:");
		String y = sc.next();// 输入密码
		// 如果输入的账号的密码和数组的不匹配 就重新输入
		int index = -1;// 建立一个下标

		for (int i = 0; i < arry.length; i++) {
			if (arry[i][0]!=null&&x.equals(arry[i][0])&&y.equals(arry[i][1])) {
					System.out.println("登入成功");
					index = i;
					break;
				}
				if(arry[i][0]==null) {
					System.out.println("登入失败");
					a(arry);
				}
			}
		d(arry,index);
		return (index);
	}

	/**
	 * 二级界面
	 */
	public static void d(String[][] arry, int index) {
		Scanner sc = new Scanner(System.in);
		System.out.println();// 换行
		// 输出界面的样式
		System.out.println("====欢迎使用WoNiuATM系统 ====");
		System.out.println("========= 0 回到主界面=========");
		System.out.println("==========  1 查询   ==========");
		System.out.println("==========  2 取款   ==========");
		System.out.println("==========  3 存款   ==========");
		System.out.println("==========  4 转账   ==========");
		System.out.println("===========================");
		System.out.print("请选择:");
		int a = sc.nextInt();
		switch (a) {
		case 0:
			System.out.println("返回成功");
			a(arry);// 返回主界面
			break;
		case 1:
			e(arry, index);// 进入查询功能
			break;
		case 2:
			f(arry, index);// 进入取款功能
			break;
		case 3:
			g(arry, index);// 进入存款功能
			break;
		case 4:
			h(arry, index);// 进入转账功能
			break;
		default:
			System.out.println("输入错误");
			d(arry, index);
			break;
		}

	}

	/**
	 * 查询
	 * 
	 * @param arry
	 * @param index
	 */
	public static void e(String[][] arry, int index) {
		System.out.println(arry[index][2]);// index登录进来账号的下标
		Scanner sc = new Scanner(System.in);
		System.out.print("继续操作吗(Y/N):");
		String a = sc.next();
		switch (a) {
		case "Y":
			d(arry, index);
			break;
		case "N":
			a(arry);
			break;
		default:
			System.out.println("输入有误");
			break;
		}
	}

	/**
	 * 取款
	 * 
	 * @param arry
	 * @param index
	 */
	public static void f(String[][] arry, int index) {
		Scanner sc = new Scanner(System.in);
		System.out.println("输入取款金额:");
		double a = sc.nextDouble();// a是输入金额
		// 将arry[index][2]转成double类型
		double b = Double.parseDouble(arry[index][2]);
		if (b > a) {
			arry[index][2] = (b - a) + " ";// 取款后的值
			System.out.println("取款成功");
			System.out.println("继续操作吗(Y/N)");
			String q = sc.next();
			switch (q) {
			case "Y":
				d(arry, index);
				break;
			case "N":
				a(arry);
				break;
			default:
				System.out.println("输入有误");
				break;
			}
		} else {
			System.out.println("余额不足");
			f(arry, index);// 不满足取款条件返回到取款功能界面
		}
	}

	/**
	 * 存款
	 */
	public static void g(String[][] arry, int index) {
		Scanner sc = new Scanner(System.in);
		System.out.println("输入存款金额:");
		double a = sc.nextDouble();// a是输入金额
		// 将arry[index][2]转成double类型
		double b = Double.parseDouble(arry[index][2]);
		if (a > 0) {
			arry[index][2] = (b + a) + " ";// 存款后的值
			System.out.println("存款成功");
			System.out.print("继续操作吗(Y/N):");
			String q = sc.next();
			switch (q) {
			case "Y":
				d(arry, index);
				break;
			case "N":
				a(arry);
				break;
			default:
				System.out.println("输入有误");
				break;
			}
		} else {
			System.out.println("输入错误");
			g(arry, index);// 不满足取款条件返回到取款功能界面
		}
	}

	/**
	 * 转账
	 */

	public static void h(String[][] arry, int index) {
		System.out.println();// 进来换行
		Scanner sc = new Scanner(System.in);
		System.out.print("输入转账的用户:");
		String a = sc.next();// a是输入的用户的账号
		// 查询输入的用户a在数组中存不存在
		for (int i = 0; i < arry.length; i++) {
			if (a.equals(arry[i][0])) {
				System.out.println("输入的用户有效，请输入您的转账金额:");
				int b = sc.nextInt();// b=输入的取款金额
				// arry[index][2]是自己的金额 转换成double类型便于加减
				double c = Double.parseDouble(arry[index][2]);
				// arry[i][2]是输入用户的金额 转换成double类型便于加减
				double d = Double.parseDouble(arry[i][2]);
				arry[index][2] = c - b + " ";
				arry[i][2] = d + b + " ";
				System.out.println("转账成功");
				System.out.println("继续操作吗(Y/N)");
				String q = sc.next();
				switch (q) {
				case "Y":
					d(arry, index);
					break;
				case "N":
					a(arry);
					break;
				default:
					System.out.println("输入有误");
					break;
				}
			}
		}
		System.out.println("没有此用户，请重新输入:");
		h(arry, index);
	}

}
